package lambda;

/**
 * JDK8之后，集合提供了一个方法:forEach，可以使用lambda表达式遍历集合
 */

import java.sql.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class LambdaDemo2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);

        //新循环遍历集合
        for(String e:list){
            System.out.println(e);
        }

        //另一种方法forEach()
        //写到new 后回车自动生成下边
        //list.forEach(new Consumer<String>() {
        //    @Override
        //    public void accept(String s) {
        //        System.out.println(s);
        //    }
        //});

        //lambda表达式：
        //list.forEach((s)-> System.out.println(s));
        //如果方法只有一个参数,方法的()可以忽略不写
        list.forEach(s-> System.out.println(s));

        /*
            lambda表达式的特殊写法:方法引用
            格式:
            类名::方法名  对应静态方法
            对象::方法名  对应成员方法

            list.forEach((s)->System.out.println(s));
                          ^                      ^
                   lambda的参数列表  一致   调用的方法的参数列表
                   此时可以省略掉参数部分，使用::调用引用

            即：当lambda表达式的参数列表与其调用的方法的参数列表一致时，就可以使用方法引用
         */
        list.forEach(System.out::println);
    }
}
